home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Modify / l-divide-section < prev    next >
Lisp/Scheme  |  1998-08-11  |  2KB  |  43 lines

  1. l-divide-section seed count divide length exclude section list 
  2.  
  3. This function is an extension of l-divide enabling lists of note-lengths to be processed in relation to their zone-section values. As in l-divide the divide operation always produces values that leave the original zone-section (or zone-length) value unaltered. 
  4.  
  5. (setq len '((1/4 1/8 1/8) (1/16 -1/16 1/8) (1/4 1/12 1/12 -1/12)))
  6.  
  7. (l-divide-section .23 1 4 'min '1/12 '(2) len)
  8. => ((1/4 1/8 1/8)
  9.     (1/16 -1/16 1/8)
  10.     (1/16 1/16 1/16 1/16 1/12 1/12 -1/12))
  11.  
  12. (l-divide-section .23 1 2 'min '1/8 '(0 2) len)
  13. => ((1/8 1/8 1/8 1/8)
  14.     (1/16 -1/16 1/8)
  15.     (1/4 1/24 1/24 1/12 -1/12))
  16.  
  17. (l-divide-section .23 2 2 'min '1/12 '((0 2)) len)
  18. => ((1/4 1/16 1/16 1/16 1/16)
  19.     (1/32 1/32 -1/16 1/8)
  20.     (1/8 1/8 1/12 1/12 -1/12))
  21.  
  22. (l-divide-section nil '(1 1) '(4 2) '(max min) '1/12 '(0 2) len)
  23. => ((1/16 1/16 1/16 1/16 1/8 1/8)
  24.     (1/16 -1/16 1/8)
  25.     (1/8 1/8 1/12 1/12 -1/12))
  26.  
  27. (l-divide-section .46 '(1 1) '(4 4) '(1/4 1/16) nil '(0 2) len)
  28. => ((1/16 1/16 1/16 1/16 1/8 1/8)
  29.     (1/16 -1/16 1/8)
  30.     (1/4 1/12 1/12 -1/12))
  31.  
  32. (l-divide-section nil '(1 1) '(2 3) '(max min) '3/16 '(1 1) len)
  33. => ((1/4 1/8 1/8)
  34.     (1/16 -1/16 1/48 1/48 1/48 1/16)
  35.     (1/4 1/12 1/12 -1/12))
  36.  
  37. (l-divide-section nil '(1 1) '(2 3) '(max min) '(1/12 3/16) '(1 1 2) len)
  38. => ((1/4 1/8 1/8)
  39.     (1/48 1/48 1/48 -1/16 1/16 1/16)
  40.     (1/8 1/8 1/12 1/12 -1/12))
  41.  
  42. In the examples the parameter count sets the number of division operations in the list. The parameter divide sets the division denominator. The choice of length value to be divided is set by a length parameter offering min and max options. The use of exclude enables a value that might have been processed under the max or min rule to be excluded. The parameter section enables selection on specific sections to be processed.
  43.